Various computing devices are configured to isolate applications from one another. The isolation prevents an application from obtaining and/or accessing the state of another application executed on the computing device. This type of application and/or process isolation is referred to as “sandboxing” which prevents any application gaining access to any other application's stored state. The security provided by sandboxing applications may prevent application state information from being compromised if an application of the computing device is compromised. However, sandboxing applications may make the process of sharing applications state between applications considerately more difficult. For example, to e-mail a document, a user may be required to generate and/or load the document into a word processing application, then generate an e-mail in an e-mail application, and then send it. As a result, the user may not be able to attach the document in a reply to an existing e-mail.
Software developers use a variety of techniques to work around sandboxing of applications. For instance, depending on the device, the application may place data objects in a memory of the computing device in a location which may be accessible to any application implemented by the computing device (even if the user does not want the data object to be accessible to a particular application). These mechanisms may at least partially compromise the sandboxing placed on applications of the computing device. As described above, data objects may become accessible to all applications implemented on the device. Furthermore, executable code on an application may need to be configured to accept data objects from other specific applications. Ineffectively providing a mechanism to share application state between applications may expose sensitive information without restrictions, and requires the user to go through a cumbersome process of ensuring that data objects are stored in the shared directories.